# coding: utf-8
import time
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.common.keys import Keys


class AutomationOperate:

    # app 操作
    # 点击事件
    @staticmethod
    def app_operate_click(operate_type, element, driver, case_id):
        if operate_type == "点击_id":
            try:
                driver.find_element_by_id(element).click()  # 点击ID事件
                casere_port = "用例编号:%s,执行通过。" % (case_id)
                return casere_port
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_click() -> 点击_id')
                casere_port = "用例编号:%s,执行不通过。" % (case_id)
                return casere_port
        elif operate_type == "点击_xpath":
            try:
                driver.find_element_by_xpath(element).click()  # 点击xpath
                casere_port = "用例编号:%s,执行通过。" % (case_id)
                return casere_port
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_click() -> 点击_xpath')
                casere_port = "用例编号:%s,执行不通过。" % (case_id)
                return casere_port
        elif operate_type == "点击_textname":  # 点击textname
            try:
                driver.find_elements_by_name(element)[0].click()
                casere_port = "用例编号:%s,执行通过。" % (case_id)
                return casere_port
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_click() -> 点击_textname')
                casere_port = "用例编号:%s,执行不通过。" % (case_id)
                return casere_port

        elif operate_type == "点击_classid":
            try:
                driver.find_elements_by_class_name(element)[0].click()  # 点击xpath
                casere_port = "用例编号:%s,执行通过。" % (case_id)
                return casere_port
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_click() -> 点击_classid')
                casere_port = "用例编号:%s,执行不通过。" % (case_id)
                return casere_port
        else:
            print("用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id))

    # 滑动操作
    def app_operate_slide(operate_type, driver, case_id, wait_element_time):
        x = driver.get_window_size()['width']
        y = driver.get_window_size()['height']
        time.sleep(wait_element_time)
        if operate_type == "向上滑动":
            try:
                driver.swipe(x * 0.5, y * 0.9, x * 0.5, y * 0.3)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_slide() -> 向上滑动')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "向左滑动":
            try:
                driver.swipe(x * 0.9, y * 0.5, x * 0.08, y * 0.5)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_slide() -> 向左滑动')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "向下滑动":
            try:
                driver.swipe(x * 0.5, y * 0.3, x * 0.5, y * 0.9)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_slide() -> 向下滑动')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "向右滑动":
            try:
                driver.swipe(x * 0.08, y * 0.5, x * 0.9, y * 0.5)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_slide() -> 向右滑动')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report

    # 输入操作
    @staticmethod
    def app_operate_input(operate_type, element, driver, case_id, *parameter):
        if operate_type == "输入_id":
            try:
                driver.find_element_by_id(element).send_keys(parameter[0])
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_input() -> 输入_id')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "输入_xpath":
            try:
                driver.find_element_by_xpath(element).send_keys(parameter[0])
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_input() -> 输入_xpath')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "输入_classid":
            try:
                driver.find_elements_by_class_name(element)[0].send_keys(parameter[0])
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_input() -> 输入_classid')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "输入_textname":
            try:
                driver.find_elements_by_name(element)[0].send_keys(parameter[0])
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_input() -> 输入_textname')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report

    # Android物理按键操作
    @staticmethod
    def app_operate_physics_key(driver, case_id, *parameter):
        key_code = str(parameter[0])
        try:
            driver.keyevent(key_code)
            case_report = "用例编号:%s,执行通过。" % (case_id)
            return case_report
        except Exception as error_result:
            print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_physics_key()')
            case_report = "用例编号:%s,执行不通过。" % (case_id)
            return case_report

    # 检查元素是否存在
    @staticmethod
    def app_operate_check_element(operate_type, element, driver, case_id, wait_element_time):
        if operate_type == "查找_id":
            try:
                driver.find_element_by_id(element)
                case_report = "用例编号:%s,执行通过。页面包含此元素" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == "查找_xpath":
            try:
                driver.find_element_by_xpath(element)
                case_report = "用例编号:%s,执行通过。页面包含此元素" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == "查找_classid":
            try:
                driver.find_elements_by_class_name(element)
                case_report = "用例编号:%s,执行通过。页面包含此元素" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == "查找_textname":
            try:
                driver.find_elements_by_name(element)[0]  # 注意 此方法在appium高版本上 可能无法运行
                case_report = "用例编号:%s,执行通过。页面包含此元素" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == '查找_文本':
            all_xpath_element = driver.find_elements_by_xpath('//*')
            for xpath_element in all_xpath_element:
                if xpath_element.text == element:
                    case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                    return case_report
            case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
            return case_report
        elif operate_type == '查找_元素':
            time.sleep(wait_element_time)  # 等待时间,让当前页面加载完成，再去查找元素
            page_element = driver.page_source  # 获取当前页面所有的元素 str类型
            if element in page_element:
                case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                return case_report
            else:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == "if包含_id":
            try:
                driver.find_element_by_id(element)
                case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == "if包含_xpath":
            try:
                driver.find_element_by_xpath(element)
                case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == "if包含_classid":
            try:
                driver.find_elements_by_class_name(element)
                case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == "if包含_textname":
            try:
                driver.find_elements_by_name(element)[0]
                case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == 'if包含_文本':
            all_xpath_element = driver.find_elements_by_xpath('//*')
            for xpath_element in all_xpath_element:
                if xpath_element.text == element:
                    case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                    return case_report
            case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
            return case_report
        elif operate_type == 'if包含_元素':
            time.sleep(wait_element_time)  # 等待时间,让当前页面加载完成，再去查找元素
            page_element = driver.page_source  # 获取当前页面所有的元素 str类型
            if element in page_element:
                case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                return case_report
            else:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性可能有问题，请检查该用例。" % (case_id)
            return case_report

    # 长按操作
    @staticmethod
    def app_operate_long_click(operate_type, element, driver, case_id, *parameter):
        if operate_type == "长按_id":  # 长按元素id
            try:
                el = driver.find_element_by_id(element)
                TouchAction(driver).long_press(el, 1).release().perform()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_long_click() -> 长按_id')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "长按_classid":  # 长按元素classname
            try:
                el = driver.find_elements_by_class_name(element)[0]
                TouchAction(driver).long_press(el, 1).release().perform()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_long_click() -> 长按_classid')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "长按_xpath":  # 长按元素xpath
            try:
                el = driver.find_element_by_xpath(element)
                TouchAction(driver).long_press(el, 1).release().perform()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_long_click() -> 长按_xpath')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "长按_textname":  # 长按textname
            try:
                el = driver.find_elements_by_name(element)[0]
                TouchAction(driver).long_press(el, 1).release().perform()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except Exception as error_result:
                print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: operate_long_click() -> 长按_textname')
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report

    # 切换WebView 指定WebView进行切换
    @staticmethod
    def app_change_system_webview(driver, case_id, web_view_nmae, webview_wait_time):
        try:
            current_webview = driver.contexts
            print('当前页面的WebView: %s' % (current_webview))
            driver.switch_to.context(web_view_nmae)
            print('切换webview成功,WebView名称为: %s' % (web_view_nmae))
            case_report = "用例编号:%s,执行通过。" % (case_id)
            time.sleep(webview_wait_time)
            return case_report
        except Exception as error_result:
            print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: change_system_webview() -> 切换WebView')
            case_report = "用例编号:%s,执行不通过。" % (case_id)
            return case_report

    # 快速切换WebView 可能切换的WebView不准
    @staticmethod
    def app_fast_change_system_webview(driver, case_id, web_view_nmae, webview_wait_time):
        try:
            current_webview = driver.contexts
            print('当前页面的WebView: %s' % (current_webview))
            for webview in current_webview:
                if 'NATIVE' in webview or 'NATIVE_APP' in webview:
                    native_webview = webview
                else:
                    h5_webview = webview
            if '原生' in web_view_nmae or 'native' in web_view_nmae or 'NATVIE' in web_view_nmae:
                driver.switch_to.context(native_webview)
            else:
                driver.switch_to.context(h5_webview)

            case_report = "用例编号:%s,执行通过。" % (case_id)
            time.sleep(webview_wait_time)
            return case_report
        except Exception as error_result:
            print('代码执行错误,错误内容为: |', error_result, '| 遇到错误的方法名: fast_change_system_webview() -> 快速切换WebView')
            case_report = "用例编号:%s,执行不通过。" % (case_id)
            return case_report

    # web浏览器 操作
    # 双击操作
    @staticmethod
    def web_operate_double_click(driver, case_id, operate_type, element):
        if operate_type == "双击_id":
            try:
                driver.find_element_by_id(element).double_click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "双击_xpath":
            try:
                driver.find_element_by_xpath(element).double_click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "双击_textname":  # 点击textname
            try:
                driver.find_elements_by_name(element)[0].double_click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "双击_classname":
            try:
                driver.find_elements_by_class_name(element)[0].double_click()  # 点击xpath
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "双击_linkname":
            try:
                driver.find_elements_by_link_text(element)[0].double_click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report

    # 右点击击操作
    @staticmethod
    def web_operate_right_click(driver, case_id, operate_type, element):
        if operate_type == "右击_id":
            try:
                driver.find_element_by_id(element).context_click().perform()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "右击_xpath":
            try:
                driver.find_element_by_xpath(element).context_click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "右击_textname":  # 点击textname
            try:
                driver.find_elements_by_name(element)[0].context_click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "右击_classname":
            try:
                driver.find_elements_by_class_name(element)[0].context_click()  # 点击xpath
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "右击_linkname":
            try:
                driver.find_elements_by_link_text(element)[0].context_click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report

    # 左点击击操作
    @staticmethod
    def web_operate_click(driver, case_id, operate_type, element):
        if operate_type == "点击_id":
            try:
                driver.find_element_by_id(element).click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "点击_xpath":
            try:
                driver.find_element_by_xpath(element).click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "点击_textname":  # 点击textname
            try:
                driver.find_elements_by_name(element)[0].click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "点击_classname":
            try:
                driver.find_elements_by_class_name(element)[0].click()  # 点击xpath
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "点击_linkname":
            try:
                driver.find_elements_by_link_text(element)[0].click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "点击_cssid":
            try:
                driver.find_element_by_css_selector("#%s" % (element)).click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "点击_cssname":
            try:
                driver.find_element_by_css_selector("a[name=\"%s\"]" % (element)).click()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report

    # 检查元素是否存在
    @staticmethod
    def web_operate_check_element(driver, case_id, operate_type, element, wait_element_time):
        if operate_type == "查找_id":
            try:
                driver.find_element_by_id(element)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "查找_xpath":
            try:
                driver.find_element_by_xpath(element)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "查找_textname":  # 查找textname
            try:
                driver.find_elements_by_name(element)[0]
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        elif operate_type == "查找_classname":
            try:
                driver.find_elements_by_class_name(element)[0]
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "查找_linkname":
            try:
                driver.find_elements_by_link_text(element)[0]
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == '查找_元素':
            time.sleep(wait_element_time)  # 等待时间,让当前页面加载完成，再去查找元素
            page_element = driver.page_source  # 获取当前页面所有的元素 str类型
            if element in page_element:
                case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                return case_report
            else:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        elif operate_type == "if包含_id":
            try:
                driver.find_element_by_id(element)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "if包含_xpath":
            try:
                driver.find_element_by_xpath(element)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "if包含_textname":
            try:
                driver.find_elements_by_name(element)[0]
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "if包含_classname":
            try:
                driver.find_elements_by_class_name(element)[0]
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "if包含_linkname":
            try:
                driver.find_elements_by_link_text(element)[0]
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == 'if包含_元素':
            time.sleep(wait_element_time)  # 等待时间,让当前页面加载完成，再去查找元素
            page_element = driver.page_source  # 获取当前页面所有的元素 str类型
            if element in page_element:
                case_report = "用例编号:%s,执行通过。页面包含此元素。" % (case_id)
                return case_report
            else:
                case_report = "用例编号:%s,执行不通过。页面不包含此元素。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report

    # 清空输入框
    @staticmethod
    def web_clear_input(driver, case_id, operate_type, element):
        if operate_type == "清空输入框_id":
            try:
                driver.find_element_by_id(element).clear()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "清空输入框_xpath":
            try:
                driver.find_element_by_xpath(element).clear()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "清空输入框_textname":
            try:
                driver.find_elements_by_name(element)[0].clear()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report

    # 输入操作
    @staticmethod
    def web_operate_input(driver, case_id, operate_type, element, *parameter):
        if operate_type == "输入_id":
            try:
                driver.find_element_by_id(element).send_keys(parameter[0])
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "输入_xpath":
            try:
                driver.find_element_by_xpath(element).send_keys(parameter[0])
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "输入_textname":
            try:
                driver.find_elements_by_name(element)[0].send_keys(parameter[0])
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report

        # 扩展性 查找元素方法
        elif operate_type == "输入_cssid":
            try:
                driver.find_element_by_css_selector("#%s" % (element)).send_keys(parameter[0])
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "输入_cssname":
            try:
                driver.find_element_by_css_selector("a[name=\"%s\"]" % (element)).send_keys(parameter[0])
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report

    # 物理按鍵操作
    @staticmethod
    def web_operate_physics_key(driver, case_id, operate_type, element):
        if operate_type == "按enter_id":
            try:
                driver.find_element_by_id(element).send_keys(Keys.ENTER)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "按enter_xpath":
            try:
                driver.find_element_by_xpath(element).send_keys(Keys.ENTER)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "按enter_textname":
            try:
                driver.find_elements_by_name(element)[0].send_keys(Keys.ENTER)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "pagedown_id":
            try:
                driver.find_element_by_id(element).send_keys(Keys.PAGE_DOWN)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "pagedown_xpath":
            try:
                driver.find_element_by_xpath(element).send_keys(Keys.PAGE_DOWN)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "pagedown_textname":
            try:
                driver.find_elements_by_name(element)[0].send_keys(Keys.PAGE_DOWN)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "pageup_id":
            try:
                driver.find_element_by_id(element).send_keys(Keys.PAGE_UP)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "pageup_xpath":
            try:
                driver.find_element_by_xpath(element).send_keys(Keys.PAGE_UP)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "pageup_textname":
            try:
                driver.find_elements_by_name(element)[0].send_keys(Keys.PAGE_UP)
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "浏览器全屏":
            try:
                driver.maximize_window()
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        elif operate_type == "设置分辨率":
            try:
                windowslist = element.split(',')
                driver.set_window_size(int(windowslist[0]), int(windowslist[1]))
                case_report = "用例编号:%s,执行通过。" % (case_id)
                return case_report
            except:
                case_report = "用例编号:%s,执行不通过。" % (case_id)
                return case_report
        else:
            case_report = "用例编号:%s,执行不通过，该用例的元素属性或参数可能有问题，请检查该用例。" % (case_id)
            return case_report


if __name__ == '__main__':
    pass
